home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / Online / Term / Extras / Source / term-source.lha / ModemPanel.c < prev    next >
C/C++ Source or Header  |  1996-10-20  |  15KB  |  584 lines

  1. /*
  2. **    ModemPanel.c
  3. **
  4. **    Editing panel for modem configuration
  5. **
  6. **    Copyright © 1990-1996 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. **
  9. **    :ts=4
  10. */
  11.  
  12. #ifndef _GLOBAL_H
  13. #include "Global.h"
  14. #endif
  15.  
  16. enum    {    GAD_LIMIT_MACRO=1000,GAD_DIAL_PREFIX,GAD_DIAL_SUFFIX,
  17.             GAD_DIAL_MODE,GAD_USE,GAD_CANCEL,
  18.             GAD_PAGER,GAD_PAGEGROUP,GAD_INTER_DIAL_DELAY,
  19.             GAD_PBX_PREFIX,GAD_PBX
  20.         };
  21.  
  22. STATIC STRPTR SAVE_DS STACKARGS
  23. ShowDialRetries(struct Gadget *UnusedGadget,LONG Level)
  24. {
  25.     if(Level > 1000)
  26.         return(LocaleString(MSG_DIAL_RETRIES_UNLIMITED_TXT));
  27.     else
  28.     {
  29.         STATIC UBYTE Buffer[10];
  30.  
  31.         LimitedSPrintf(sizeof(Buffer),Buffer,"%ld",Level);
  32.  
  33.         return(Buffer);
  34.     }
  35. }
  36.  
  37. STATIC STRPTR SAVE_DS STACKARGS
  38. ShowHours(struct Gadget *UnusedGadget,LONG Level)
  39. {
  40.     STATIC UBYTE Buffer[15];
  41.  
  42.     LimitedSPrintf(sizeof(Buffer),Buffer,LocaleString(MSG_GLOBAL_SHOW_HOURS_TXT),Level / 60,Level % 60);
  43.  
  44.     return(Buffer);
  45. }
  46.  
  47. STATIC STRPTR SAVE_DS STACKARGS
  48. ModemShowSeconds(struct Gadget *UnusedGadget,LONG Level)
  49. {
  50.     STATIC UBYTE Buffer[15];
  51.  
  52.     LimitedSPrintf(sizeof(Buffer),Buffer,LocaleString(MSG_GLOBAL_SHOW_MINUTES_TXT),Level / 60,Level % 60);
  53.  
  54.     return(Buffer);
  55. }
  56.  
  57. BOOL
  58. ModemPanel(struct Window *Parent,struct Configuration *LocalConfig)
  59. {
  60.     STATIC LONG PageTitleID[7] =
  61.     {
  62.         MSG_V36_0110,
  63.         MSG_V36_0111,
  64.         MSG_DIALCOMMANDS_TXT,
  65.         MSG_V36_0112,
  66.         MSG_V36_0116,
  67.         MSG_V36_0118,
  68.         -1
  69.     };
  70.  
  71.     STATIC BYTE InitialPage = 0;
  72.  
  73.     LayoutHandle *Handle;
  74.     BOOL UseIt;
  75.  
  76.     UseIt = FALSE;
  77.  
  78.     SaveConfig(LocalConfig,PrivateConfig);
  79.  
  80.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  81.         LAHN_LocaleHook,    &LocaleHook,
  82.         LAHN_ExitFlush,    FALSE,
  83.     TAG_DONE))
  84.     {
  85.         struct Window *PanelWindow;
  86.  
  87.         LT_New(Handle,
  88.             LA_Type,    VERTICAL_KIND,
  89.         TAG_DONE);
  90.         {
  91.             LT_New(Handle,
  92.                 LA_Type,VERTICAL_KIND,
  93.             TAG_DONE);
  94.             {
  95.                 LT_New(Handle,
  96.                     LA_Type,        TAB_KIND,
  97.                     LA_ID,            GAD_PAGER,
  98.                     LA_LabelID,        MSG_XFER_PAGE_TXT,
  99.                     LACY_LabelTable,PageTitleID,
  100.                     LACY_AutoPageID,GAD_PAGEGROUP,
  101.                     LACY_TabKey,    TRUE,
  102.                     LA_BYTE,        &InitialPage,
  103.                     LATB_FullWidth,    TRUE,
  104.                 TAG_DONE);
  105.  
  106.                 LT_EndGroup(Handle);
  107.             }
  108.  
  109.             LT_New(Handle,
  110.                 LA_Type,        VERTICAL_KIND,
  111.                 LA_ID,            GAD_PAGEGROUP,
  112.                 LAGR_ActivePage,InitialPage,
  113.             TAG_DONE);
  114.             {
  115.                 LT_New(Handle,
  116.                     LA_Type,    VERTICAL_KIND,
  117.                 TAG_DONE);
  118.                 {
  119.                     LT_New(Handle,
  120.                         LA_Type,        STRING_KIND,
  121.                         LA_LabelID,        MSG_MODEMPANEL_MODEM_INIT_STRING_GAD,
  122.                         LA_STRPTR,        PrivateConfig->ModemConfig->ModemInit,
  123.                         LA_Chars,        20,
  124.                         GTST_MaxChars,    sizeof(PrivateConfig->ModemConfig->ModemInit) - 1,
  125.                     TAG_DONE);
  126.  
  127.                     LT_New(Handle,
  128.                         LA_Type,        STRING_KIND,
  129.                         LA_LabelID,        MSG_MODEMPANEL_MODEM_EXIT_STRING_GAD,
  130.                         LA_STRPTR,        PrivateConfig->ModemConfig->ModemExit,
  131.                         GTST_MaxChars,    sizeof(PrivateConfig->ModemConfig->ModemExit) - 1,
  132.                     TAG_DONE);
  133.  
  134.                     LT_New(Handle,
  135.                         LA_Type,        STRING_KIND,
  136.                         LA_LabelID,        MSG_MODEMPANEL_MODEM_HANGUP_STRING_GAD,
  137.                         LA_STRPTR,        PrivateConfig->ModemConfig->ModemHangup,
  138.                         GTST_MaxChars,    sizeof(PrivateConfig->ModemConfig->ModemHangup) - 1,
  139.                     TAG_DONE);
  140.  
  141.                     if(LocalConfig == Config)
  142.                     {
  143.                         LT_New(Handle,
  144.                             LA_Type,        CHECKBOX_KIND,
  145.                             LA_LabelID,        MSG_DO_NOT_SEND_MODEM_COMMANDS_TXT,
  146.                             LA_BYTE,        &PrivateConfig->ModemConfig->DoNotSendMainModemCommands,
  147.                             LA_ExtraSpace,    TRUE,
  148.                         TAG_DONE);
  149.                     }
  150.  
  151.                     LT_New(Handle,
  152.                         LA_Type,    XBAR_KIND,
  153.                     TAG_DONE);
  154.  
  155.                     LT_New(Handle,
  156.                         LA_Type,                INTEGER_KIND,
  157.                         LA_LabelID,                MSG_COMMAND_SEND_DELAY_TXT,
  158.                         LA_LONG,                &PrivateConfig->ModemConfig->CharSendDelay,
  159.                         LAIN_Min,                0,
  160.                         LAIN_UseIncrementers,    TRUE,
  161.                     TAG_DONE);
  162.  
  163.                     LT_EndGroup(Handle);
  164.                 }
  165.  
  166.                 LT_New(Handle,
  167.                     LA_Type,    VERTICAL_KIND,
  168.                 TAG_DONE);
  169.                 {
  170.                     LT_New(Handle,
  171.                         LA_Type,        STRING_KIND,
  172.                         LA_LabelID,        MSG_MODEMPANEL_NO_CARRIER_STRING_GAD,
  173.                         LA_STRPTR,        PrivateConfig->ModemConfig->NoCarrier,
  174.                         LA_Chars,        20,
  175.                         GTST_MaxChars,    sizeof(PrivateConfig->ModemConfig->NoCarrier) - 1,
  176.                     TAG_DONE);
  177.  
  178.                     LT_New(Handle,
  179.                         LA_Type,        STRING_KIND,
  180.                         LA_LabelID,        MSG_MODEMPANEL_NO_DIALTONE_STRING_GAD,
  181.                         LA_STRPTR,        PrivateConfig->ModemConfig->NoDialTone,
  182.                         GTST_MaxChars,    sizeof(PrivateConfig->ModemConfig->NoDialTone) - 1,
  183.                     TAG_DONE);
  184.  
  185.                     LT_New(Handle,
  186.                         LA_Type,        STRING_KIND,
  187.                         LA_LabelID,        MSG_MODEMPANEL_CONNECT_STRING_GAD,
  188.                         LA_STRPTR,        PrivateConfig->ModemConfig->Connect,
  189.                         GTST_MaxChars,    sizeof(PrivateConfig->ModemConfig->Connect) - 1,
  190.                     TAG_DONE);
  191.  
  192.                     LT_New(Handle,
  193.                         LA_Type,        STRING_KIND,
  194.                         LA_LabelID,        MSG_MODEMPANEL_VOICE_STRING_GAD,
  195.                         LA_STRPTR,        PrivateConfig->ModemConfig->Voice,
  196.                         GTST_MaxChars,    sizeof(PrivateConfig->ModemConfig->Voice) - 1,
  197.                     TAG_DONE);
  198.  
  199.                     LT_New(Handle,
  200.                         LA_Type,        STRING_KIND,
  201.                         LA_LabelID,        MSG_MODEMPANEL_RING_STRING_GAD,
  202.                         LA_STRPTR,        PrivateConfig->ModemConfig->Ring,
  203.                         GTST_MaxChars,    sizeof(PrivateConfig->ModemConfig->Ring) - 1,
  204.                     TAG_DONE);
  205.  
  206.                     LT_New(Handle,
  207.                         LA_Type,        STRING_KIND,
  208.                         LA_LabelID,        MSG_MODEMPANEL_BUSY_STRING_GAD,
  209.                         LA_STRPTR,        PrivateConfig->ModemConfig->Busy,
  210.                         GTST_MaxChars,    sizeof(PrivateConfig->ModemConfig->Busy) - 1,
  211.                     TAG_DONE);
  212.  
  213.                     LT_New(Handle,
  214.                         LA_Type,        STRING_KIND,
  215.                         LA_LabelID,        MSG_MODEMPANEL_OK_STRING_GAD,
  216.                         LA_STRPTR,        PrivateConfig->ModemConfig->Ok,
  217.                         GTST_MaxChars,    sizeof(PrivateConfig->ModemConfig->Ok) - 1,
  218.                     TAG_DONE);
  219.  
  220.                     LT_New(Handle,
  221.                         LA_Type,        STRING_KIND,
  222.                         LA_LabelID,        MSG_MODEMPANEL_ERROR_STRING_GAD,
  223.                         LA_STRPTR,        PrivateConfig->ModemConfig->Error,
  224.                         GTST_MaxChars,    sizeof(PrivateConfig->ModemConfig->Error) - 1,
  225.                     TAG_DONE);
  226.  
  227.                     LT_EndGroup(Handle);
  228.                 }
  229.  
  230.                 LT_New(Handle,
  231.                     LA_Type,    VERTICAL_KIND,
  232.                 TAG_DONE);
  233.                 {
  234.                     STATIC LONG DialLabels[] =
  235.                     {
  236.                         MSG_DIALMODE1_TXT,
  237.                         MSG_DIALMODE2_TXT,
  238.                         MSG_DIALMODE3_TXT,
  239.                         MSG_DIALMODE4_TXT,
  240.                         -1
  241.                     };
  242.  
  243.                     BOOL NotFound;
  244.                     LONG i;
  245.  
  246.                     for(i = 0, NotFound = TRUE ; NotFound && i < strlen(PrivateConfig->ModemConfig->DialPrefix) - 1 ; i++)
  247.                     {
  248.                         if(PrivateConfig->ModemConfig->DialPrefix[i] == '\\' && ToUpper(PrivateConfig->ModemConfig->DialPrefix[i + 1]) == 'W')
  249.                             NotFound = FALSE;
  250.                     }
  251.  
  252.                     for(i = 0 ; NotFound && i < strlen(PrivateConfig->ModemConfig->DialSuffix) - 1 ; i++)
  253.                     {
  254.                         if(PrivateConfig->ModemConfig->DialSuffix[i] == '\\' && ToUpper(PrivateConfig->ModemConfig->DialSuffix[i + 1]) == 'W')
  255.                             NotFound = FALSE;
  256.                     }
  257.  
  258.                     LT_New(Handle,
  259.                         LA_Type,        STRING_KIND,
  260.                         LA_LabelID,        MSG_MODEMPANEL_DIAL_PREFIX_GAD,
  261.                         LA_STRPTR,        PrivateConfig->ModemConfig->DialPrefix,
  262.                         LA_Chars,        20,
  263.                         LA_ID,            GAD_DIAL_PREFIX,
  264.                         GTST_MaxChars,    sizeof(PrivateConfig->ModemConfig->DialPrefix) - 1,
  265.                     TAG_DONE);
  266.  
  267.                     LT_New(Handle,
  268.                         LA_Type,        STRING_KIND,
  269.                         LA_LabelID,        MSG_MODEMPANEL_DIAL_SUFFIX_GAD,
  270.                         LA_STRPTR,        PrivateConfig->ModemConfig->DialSuffix,
  271.                         LA_ID,            GAD_DIAL_SUFFIX,
  272.                         GTST_MaxChars,    sizeof(PrivateConfig->ModemConfig->DialSuffix) - 1,
  273.                     TAG_DONE);
  274.  
  275.                     LT_New(Handle,
  276.                         LA_Type,        CYCLE_KIND,
  277.                         LA_LabelID,        MSG_DIALMODE2_GAD,
  278.                         LA_BYTE,        &PrivateConfig->ModemConfig->DialMode,
  279.                         LA_ID,            GAD_DIAL_MODE,
  280.                         LACY_LabelTable,DialLabels,
  281.                         GA_Disabled,    NotFound,
  282.                     TAG_DONE);
  283.  
  284.                     LT_New(Handle,
  285.                         LA_Type,        STRING_KIND,
  286.                         LA_LabelID,        MSG_PBX_DIAL_PREFIX_TXT,
  287.                         LA_STRPTR,        PrivateConfig->ModemConfig->PBX_Prefix,
  288.                         LA_ID,            GAD_PBX_PREFIX,
  289.                         GTST_MaxChars,    sizeof(PrivateConfig->ModemConfig->PBX_Prefix) - 1,
  290.                         LA_ExtraSpace,    TRUE,
  291.                     TAG_DONE);
  292.  
  293.                     LT_New(Handle,
  294.                         LA_Type,        CHECKBOX_KIND,
  295.                         LA_LabelID,        MSG_PBX_DIAL_MODE_TXT,
  296.                         LA_BYTE,        &PrivateConfig->ModemConfig->PBX_Mode,
  297.                     TAG_DONE);
  298.  
  299.                     LT_EndGroup(Handle);
  300.                 }
  301.  
  302.                 LT_New(Handle,
  303.                     LA_Type,    VERTICAL_KIND,
  304.                 TAG_DONE);
  305.                 {
  306.                     LT_New(Handle,
  307.                         LA_Type,            SliderType,
  308.                         LA_LabelID,            MSG_MODEMPANEL_REDIAL_DELAY_GAD,
  309.                         LA_LONG,            &PrivateConfig->ModemConfig->RedialDelay,
  310.                         GTSL_Min,            0,
  311.                         GTSL_Max,            60 * 60,
  312.                         GTSL_DispFunc,        ModemShowSeconds,
  313.                         GTSL_LevelFormat,    "%s",
  314.                     TAG_DONE);
  315.  
  316.                     if(PrivateConfig->ModemConfig->DialRetries < 0)
  317.                         PrivateConfig->ModemConfig->DialRetries = 1001;
  318.  
  319.                     LT_New(Handle,
  320.                         LA_Type,            SliderType,
  321.                         LA_LabelID,            MSG_MODEMPANEL_DIAL_RETRIES_GAD,
  322.                         LA_LONG,            &PrivateConfig->ModemConfig->DialRetries,
  323.                         GTSL_DispFunc,        ShowDialRetries,
  324.                         GTSL_Min,            0,
  325.                         GTSL_Max,            1001,
  326.                         GTSL_LevelFormat,    "%s",
  327.                     TAG_DONE);
  328.  
  329.                     LT_New(Handle,
  330.                         LA_Type,            SliderType,
  331.                         LA_LabelID,            MSG_MODEMPANEL_DIAL_TIMEOUT_GAD,
  332.                         LA_LONG,            &PrivateConfig->ModemConfig->DialTimeout,
  333.                         GTSL_Min,            0,
  334.                         GTSL_Max,            1800,
  335.                         GTSL_DispFunc,        ModemShowSeconds,
  336.                         GTSL_LevelFormat,    "%s",
  337.                     TAG_DONE);
  338.  
  339.                     LT_New(Handle,
  340.                         LA_Type,            SliderType,
  341.                         LA_LabelID,            MSG_INTER_DIAL_DELAY_TXT,
  342.                         LA_LONG,            &PrivateConfig->ModemConfig->InterDialDelay,
  343.                         GTSL_Min,            0,
  344.                         GTSL_Max,            1800,
  345.                         GTSL_DispFunc,        ModemShowSeconds,
  346.                         GTSL_LevelFormat,    "%s",
  347.                     TAG_DONE);
  348.  
  349.                     LT_New(Handle,
  350.                         LA_Type,            CHECKBOX_KIND,
  351.                         LA_LabelID,            MSG_VERBOSE_DIALING_TXT,
  352.                         LA_BYTE,            &PrivateConfig->ModemConfig->VerboseDialing,
  353.                     TAG_DONE);
  354.  
  355.                     LT_New(Handle,
  356.                         LA_Type,            CHECKBOX_KIND,
  357.                         LA_LabelID,            MSG_MODEMPANEL_NOCARRIER_IS_BUSY_GAD,
  358.                         LA_BYTE,            &PrivateConfig->ModemConfig->NoCarrierIsBusy,
  359.                     TAG_DONE);
  360.  
  361.                     LT_New(Handle,
  362.                         LA_Type,            XBAR_KIND,
  363.                     TAG_DONE);
  364.  
  365.                     LT_New(Handle,
  366.                         LA_Type,            CHECKBOX_KIND,
  367.                         LA_LabelID,            MSG_MODEMPANEL_CONNECT_AUTO_BAUD_GAD,
  368.                         LA_BYTE,            &PrivateConfig->ModemConfig->ConnectAutoBaud,
  369.                     TAG_DONE);
  370.  
  371.                     LT_New(Handle,
  372.                         LA_Type,            CHECKBOX_KIND,
  373.                         LA_LabelID,            MSG_MODEMPANEL_ABORT_HANGS_UP_TXT,
  374.                         LA_BYTE,            &PrivateConfig->ModemConfig->AbortHangsUp,
  375.                     TAG_DONE);
  376.  
  377.                     LT_New(Handle,
  378.                         LA_Type,            SliderType,
  379.                         LA_LabelID,            MSG_MODEMPANEL_TIME_TO_CONNECT_GAD,
  380.                         LA_LONG,            &PrivateConfig->ModemConfig->TimeToConnect,
  381.                         LA_Chars,            8,
  382.                         GTSL_Min,            0,
  383.                         GTSL_Max,            60 * 60,
  384.                         GTSL_DispFunc,        ModemShowSeconds,
  385.                         GTSL_LevelFormat,    "%s",
  386.                     TAG_DONE);
  387.  
  388.                     LT_EndGroup(Handle);
  389.                 }
  390.  
  391.                 LT_New(Handle,
  392.                     LA_Type,    VERTICAL_KIND,
  393.                 TAG_DONE);
  394.                 {
  395.                     LT_New(Handle,
  396.                         LA_Type,        CHECKBOX_KIND,
  397.                         LA_LabelID,        MSG_MODEMPANEL_DROP_DTR_ON_HANGUP_GAD,
  398.                         LA_BYTE,        &PrivateConfig->ModemConfig->DropDTR,
  399.                     TAG_DONE);
  400.  
  401.                     LT_New(Handle,
  402.                         LA_Type,        CHECKBOX_KIND,
  403.                         LA_LabelID,        MSG_MODEMPANEL_REDIAL_AFTER_HANGUP_GAD,
  404.                         LA_BYTE,        &PrivateConfig->ModemConfig->RedialAfterHangup,
  405.                     TAG_DONE);
  406.  
  407.                     LT_EndGroup(Handle);
  408.                 }
  409.  
  410.                 LT_New(Handle,
  411.                     LA_Type,    VERTICAL_KIND,
  412.                 TAG_DONE);
  413.                 {
  414.                     LT_New(Handle,
  415.                         LA_Type,            SliderType,
  416.                         LA_LabelID,            MSG_MODEMPANEL_CONNECTION_LIMIT_GAD,
  417.                         LA_WORD,            &PrivateConfig->ModemConfig->ConnectLimit,
  418.                         GTSL_Min,            0,
  419.                         GTSL_Max,            1440,
  420.                         GTSL_DispFunc,        ShowHours,
  421.                         GTSL_LevelFormat,    "%s",
  422.                     TAG_DONE);
  423.  
  424.                     LT_New(Handle,
  425.                         LA_Type,            STRING_KIND,
  426.                         LA_LabelID,            MSG_MODEMPANEL_LIMIT_MACRO_GAD,
  427.                         LA_STRPTR,            PrivateConfig->ModemConfig->ConnectLimitMacro,
  428.                         LA_Chars,            20,
  429.                         LA_ID,                GAD_LIMIT_MACRO,
  430.                         GTST_MaxChars,        sizeof(PrivateConfig->ModemConfig->ConnectLimitMacro) - 1,
  431.                     TAG_DONE);
  432.  
  433.                     LT_EndGroup(Handle);
  434.                 }
  435.  
  436.                 LT_EndGroup(Handle);
  437.             }
  438.  
  439.             LT_New(Handle,
  440.                 LA_Type,    VERTICAL_KIND,
  441.             TAG_DONE);
  442.             {
  443.                 LT_New(Handle,
  444.                     LA_Type,        XBAR_KIND,
  445.                     LAXB_FullSize,    TRUE,
  446.                 TAG_DONE);
  447.  
  448.                 LT_EndGroup(Handle);
  449.             }
  450.  
  451.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  452.                 LAGR_SameSize,    TRUE,
  453.                 LAGR_Spread,    TRUE,
  454.             TAG_DONE);
  455.             {
  456.                 LT_New(Handle,
  457.                     LA_Type,        BUTTON_KIND,
  458.                     LA_LabelID,        MSG_GLOBAL_USE_GAD,
  459.                     LA_ID,            GAD_USE,
  460.                     LABT_ReturnKey,    TRUE,
  461.                     LABT_ExtraFat,    TRUE,
  462.                 TAG_DONE);
  463.  
  464.                 LT_New(Handle,
  465.                     LA_Type,        BUTTON_KIND,
  466.                     LA_LabelID,        MSG_GLOBAL_CANCEL_GAD,
  467.                     LA_ID,            GAD_CANCEL,
  468.                     LABT_EscKey,    TRUE,
  469.                     LABT_ExtraFat,    TRUE,
  470.                 TAG_DONE);
  471.  
  472.                 LT_EndGroup(Handle);
  473.             }
  474.  
  475.             LT_EndGroup(Handle);
  476.         }
  477.  
  478.         if(PanelWindow = LT_Build(Handle,
  479.             LAWN_TitleID,        MSG_MODEMPANEL_MODEM_PREFERENCES_TXT,
  480.             LAWN_HelpHook,        &GuideHook,
  481.             LAWN_Parent,        Parent,
  482.             WA_DepthGadget,        TRUE,
  483.             WA_DragBar,            TRUE,
  484.             WA_RMBTrap,            TRUE,
  485.             WA_Activate,        TRUE,
  486.             WA_SimpleRefresh,    TRUE,
  487.         TAG_DONE))
  488.         {
  489.             struct IntuiMessage    *Message;
  490.             struct Gadget *MsgGadget;
  491.             ULONG MsgClass;
  492.             BOOL NotFound;
  493.             BOOL Done;
  494.             LONG i;
  495.  
  496.             GuideContext(CONTEXT_MODEM);
  497.  
  498.             PushWindow(PanelWindow);
  499.  
  500.             LT_ShowWindow(Handle,TRUE);
  501.  
  502.             Done = FALSE;
  503.  
  504.             do
  505.             {
  506.                 if(Wait(PORTMASK(PanelWindow->UserPort) | SIG_BREAK) & SIG_BREAK)
  507.                     break;
  508.  
  509.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  510.                 {
  511.                     MsgClass    = Message->Class;
  512.                     MsgGadget    = (struct Gadget *)Message->IAddress;
  513.  
  514.                     LT_ReplyIMsg(Message);
  515.  
  516.                     if(MsgClass == IDCMP_GADGETUP)
  517.                     {
  518.                         switch(MsgGadget->GadgetID)
  519.                         {
  520.                             case GAD_DIAL_PREFIX:
  521.                             case GAD_DIAL_SUFFIX:
  522.                             case GAD_DIAL_MODE:
  523.  
  524.                                 for(i = 0, NotFound = TRUE ; NotFound && i < strlen(PrivateConfig->ModemConfig->DialPrefix) - 1 ; i++)
  525.                                 {
  526.                                     if(PrivateConfig->ModemConfig->DialPrefix[i] == '\\' && ToUpper(PrivateConfig->ModemConfig->DialPrefix[i + 1]) == 'W')
  527.                                         NotFound = FALSE;
  528.                                 }
  529.  
  530.                                 for(i = 0 ; NotFound && i < strlen(PrivateConfig->ModemConfig->DialSuffix) - 1 ; i++)
  531.                                 {
  532.                                     if(PrivateConfig->ModemConfig->DialSuffix[i] == '\\' && ToUpper(PrivateConfig->ModemConfig->DialSuffix[i + 1]) == 'W')
  533.                                         NotFound = FALSE;
  534.                                 }
  535.  
  536.                                 LT_SetAttributes(Handle,GAD_DIAL_MODE,
  537.                                     GA_Disabled,NotFound,
  538.                                 TAG_DONE);
  539.  
  540.                                 break;
  541.  
  542.                             case GAD_USE:
  543.  
  544.                                 LT_UpdateStrings(Handle);
  545.  
  546.                                 UseIt = Done = TRUE;
  547.                                 break;
  548.  
  549.                             case GAD_CANCEL:
  550.  
  551.                                 Done = TRUE;
  552.                                 break;
  553.                         }
  554.                     }
  555.                 }
  556.             }
  557.             while(!Done);
  558.  
  559.             PopWindow();
  560.         }
  561.  
  562.         LT_DeleteHandle(Handle);
  563.     }
  564.  
  565.     if(UseIt)
  566.     {
  567.         if(PrivateConfig->ModemConfig->DialRetries > 1000)
  568.             PrivateConfig->ModemConfig->DialRetries = -1;
  569.  
  570.         if(Config->MiscConfig->ProtectiveMode && PrivateConfig->SerialConfig->BaudRate >= 4800 && PrivateConfig->ModemConfig->ConnectAutoBaud)
  571.         {
  572.             if(ShowRequest(Window,LocaleString(MSG_AUTOBAUD_TXT),LocaleString(MSG_GLOBAL_YES_NO_TXT)))
  573.                 PrivateConfig->ModemConfig->ConnectAutoBaud = FALSE;
  574.         }
  575.     }
  576.  
  577.     if(UseIt)
  578.         SwapConfig(LocalConfig,PrivateConfig);
  579.     else
  580.         SaveConfig(LocalConfig,PrivateConfig);
  581.  
  582.     return(UseIt);
  583. }
  584.